import UIKit
/*
 1.函数是什么
 2.函数写法
 3.函数重载
 */

// 加法
func plus(a: Int, b: Int) -> Int {
  return a + b
}

// 函数重载
func plus(x: Int, y: Int) -> String {
  return "x y"
}

let result: Int = plus(a: 2, b: 3)
print(result)

/* 计算器案例
 1.计算器厂家 定义计算器接收2个数,接收一个操作规则
 2.用户 用户传递a,b,operation
 */
func calculate(a: Int, b: Int, myOperation: (Int, Int) -> Any) -> Any {
  let res = myOperation(a, b)
  return res
}

let result1 = calculate(a: 2, b: 3, myOperation: plus(a:b:))

let result2 = calculate(a: 3, b: 3, myOperation: plus(x:y:))

/**
 打招呼案例
 */
// 定义一个函数，接受一个回调函数作为参数
func greet(name: String, callback: () -> Void) {
  print("Hello, " + name + "!")
  callback() // 调用回调函数
}

// 定义一个回调函数
func sayGoodbye() {
  print("Goodbye!")
}

// 调用 greet 函数，并传入 sayGoodbye 作为回调
greet(name: "Alice", callback: sayGoodbye)



func t1(win: Bool, prize: Int) {
  if win {
    print("我中了\(prize)大奖,请个喇叭在村里吹个三天三夜")
  } else {
    print("在家吃泡面")
  }
}

let t2 = { (win: Bool, prize: Int) in
  if win {
    print("我中了\(prize)大奖,请个喇叭在村里吹个三天三夜")
  } else {
    print("在家吃泡面")
  }
}


// buyTickets(callback: t1(win:prize:))
// buyTickets(callback: t2)

let p: Person = Person(name: "张三", age: 18)

